/**
 * @author Vitor Franco do Carmo (vitor.carmo@cpmbraxis.com)
 * @since 22/05/2014
 *
 */
package br.com.vfcfw.controller.validator;

import java.util.Locale;

import javax.faces.validator.Validator;

import br.com.vfcfw.commons.util.MensagemUtil;
import br.com.vfcfw.commons.util.ValidacaoUtil;
import br.com.vfcfw.controller.util.JSFUtil;

/**
 * Classe base para todas as classes que implementem {@link Validator}.
 * 
 * @author Vitor Franco do Carmo (vitor.carmo@cpmbraxis.com)
 * @since 22/05/2014
 * 
 */
public abstract class BaseValidator implements Validator {

    /**
     * Construtor da classe.
     */
    public BaseValidator() {

        super();
    }

    /**
     * Retorna o Local atual.
     * 
     * @return {@link Locale}
     */
    public Locale getLocaleAtual() {

        return JSFUtil.getLocale();
    }

    /**
     * Retorna o texto, no arquivo de recurso, correspondente a chave passada para a localidade atual.
     * 
     * @param chave Chave do texto no arquivo de recurso.
     * @param argumentos Argumentos que substituirão os curingas no texto.
     * @return Texto.
     */
    public String obterMensagem(String chave, Object... argumentos) {

        return MensagemUtil.obterMensagem(getLocaleAtual(), chave, argumentos);
    }

    /**
     * Verifica se o valor é nulo ou vazio.
     * 
     * @param valor Valor.
     * @return <tt>TRUE</tt> se não for <b>nulo</b> ou <b>vazio</b>, <tt>FALSE</tt> caso contrário.
     */
    public boolean possuiValor(Object valor) {

        return ValidacaoUtil.possuiValor(valor);
    }

}
